import urllib.parse
import urllib.request

# 定义一个函数用于创建请求对象
def create_request(page):
    base_url = ""
    data = {
        'start': (page - 1) * 20, # 根据页码计算起始位置
        'limit': 20  # 每页的数据条数
    }
    # 将字典形式的参数转换为URL编码字符串
    data = urllib.parse.urlencode(data, encoding='utf-8')
    url = base_url + data  # 拼接完整的URL

    # 设置请求头，模拟浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0'
    }
    # 创建请求对象
    request = urllib.request.Request(url=url, headers=headers)
    return request


# 定义一个函数用于获取响应数据
def get_context(request):
    response = urllib.request.urlopen(request)  # 发送请求并获取响应
    context = response.read().decode('utf-8')  # 读取响应内容并解码为字符串
    return context


# 定义一个函数用于将数据保存到本地文件
def down_load(page, context):
    # 文件名根据页码动态生成
    with open('douban.json' + str(page) + '.json', 'w', encoding='utf-8') as fp:
        fp.write(context)  # 将数据写入文件


# 主程序入口
if __name__ == '__main__':
    # 用户输入起始页码和结束页码
    start_page = int(input('起始的页码：'))
    end_page = int(input('结束的页面'))

    # 遍历每一页
    for page in range(start_page, end_page + 1):  # 修正范围，确保包含end_page
        # 每一页都有自己的请求对象的定制
        request = create_request(page)
        # 获取响应的数据
        context = get_context(request)
        # 下载数据到本地文件
        down_load(page, context)